package com.yunyao.framework.service;

import com.yunyao.common.dto.SaleContractDto;
import com.yunyao.common.dto.excel.ContractExcelDto;
import com.yunyao.common.dto.excel.ContractMaterialExcelDto;
import com.yunyao.common.web.util.PageResult;
import com.yunyao.common.web.util.YResult;
import com.yunyao.framework.dto.sale.SaleContractApprovalDto;
import com.yunyao.framework.dto.sale.SaleContractSaveDto;
import com.yunyao.framework.dto.sale.SaleContractSubmitApprovalDto;
import com.yunyao.framework.vo.sale.SaleContractInfoVO;
import com.yunyao.framework.vo.sale.SaleContractPurchaseInfoVO;
import com.yunyao.framework.vo.sale.SaleContractVO;

import java.util.List;

/**
 * 销售合同
 * @author xingjishuai
 * @date 2024-07-11
 */
public interface SaleContractService {
    /**
     * 获取销售合同列表
     *
     * @param saleContractDto
     * @return
     */
    YResult<PageResult<SaleContractVO>> pageList(SaleContractDto saleContractDto);
    /**
     * 根据id获取销售合同信息
     * @param id
     * @return
     */
    YResult<SaleContractInfoVO> getSaleContractById(String id);

    /**
     * 保存销售合同信息
     *
     * @param saveDto
     * @return
     */
    YResult<String> saveInfo(SaleContractSaveDto saveDto);

    /**
     * 销售合同信息
     * @param type
     * @return
     */
    YResult<String> generateCode(String type);

    /**
     * 删除销售合同信息
     * @param id
     * @return
     */
    YResult<String> deleted(String id);

    /**
     * 提交审批
     *
     * @param approvalDto
     * @return
     */
    YResult<String> submitApproval(SaleContractSubmitApprovalDto approvalDto);

    /**
     * 审批
     * @param approvalDto
     * @return
     */
    YResult<String> approval(SaleContractApprovalDto approvalDto);
    /**
     * 获取销售合同采购信息
     * @param id
     * @return
     */
    YResult<SaleContractPurchaseInfoVO> getSaleContractPurchaseInfo(String id);


    /**
     * 导出的合同材料信息
     *
     * @param contractId
     * @return
     */
    List<ContractMaterialExcelDto> exportMaterial(String contractId);


    List<ContractExcelDto> export(SaleContractDto saleContractDto);
}
